package dominio

import java.util.List
import java.util.ArrayList

interface AgendaListener {
	
	def boolean sucedio(Evento evento)
	
	def boolean seEnvioElMail(String msj)
	
	def boolean seEnvioElSMS(String msj)
	
	def boolean seHizoUnaLlamada(String msj)
	
	def void registrarEvento(Evento agenda)
	
	def void registrarAvisos(List<Aviso> avisos)
	
}

class IAgendaListener implements AgendaListener {
	
	@Property List<Evento> eventosAcontecidos = new ArrayList<Evento>
	@Property List<Aviso> avisosAcontecidos = new ArrayList<Aviso>
	
	override sucedio(Evento e) {
		eventosAcontecidos.contains(e)
	}
	
	override seEnvioElMail(String msj) {
		avisosAcontecidos.exists[a | a.envioMail(msj)]
	}
	
	override seEnvioElSMS(String msj) {
		avisosAcontecidos.exists[a | a.envioSMS(msj)]
	}
	
	override seHizoUnaLlamada(String msj) {
		avisosAcontecidos.exists[a | a.hizoLlamada(msj)]
	}
	
	override registrarEvento(Evento e) {
		if(!eventosAcontecidos.contains(e)) {
			eventosAcontecidos += e	
		}
		registrarAvisos(e.avisos)
	}
	
	override registrarAvisos(List<Aviso> avisos) {
		avisos.forEach[a | 
			if(!avisosAcontecidos.contains(a)) {
				avisosAcontecidos += a
			}
		]   
	}
	
}